home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / system-config-printer / troubleshoot / Locale.py < prev    next >
Text File  |  2009-10-19  |  4KB  |  113 lines

  1. #!/usr/bin/env python
  2.  
  3. ## Printing troubleshooter
  4.  
  5. ## Copyright (C) 2008 Red Hat, Inc.
  6. ## Copyright (C) 2008 Tim Waugh <twaugh@redhat.com>
  7.  
  8. ## This program is free software; you can redistribute it and/or modify
  9. ## it under the terms of the GNU General Public License as published by
  10. ## the Free Software Foundation; either version 2 of the License, or
  11. ## (at your option) any later version.
  12.  
  13. ## This program is distributed in the hope that it will be useful,
  14. ## but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. ## GNU General Public License for more details.
  17.  
  18. ## You should have received a copy of the GNU General Public License
  19. ## along with this program; if not, write to the Free Software
  20. ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22. import locale
  23.  
  24. from base import *
  25.  
  26. class Locale(Question):
  27.     def __init__ (self, troubleshooter):
  28.         Question.__init__ (self, troubleshooter, "Locale issues")
  29.         page = self.initial_vbox (_("Incorrect Page Size"),
  30.                                   _("The page size for the print job was "
  31.                                     "not the printer's default page size.  "
  32.                                     "If this is not intentional it may cause "
  33.                                     "alignment problems."))
  34.  
  35.         table = gtk.Table (2, 2)
  36.         table.set_row_spacings (6)
  37.         table.set_col_spacings (6)
  38.         page.pack_start (table)
  39.         self.printer_page_size = gtk.Label ()
  40.         self.printer_page_size.set_alignment (0, 0)
  41.         self.job_page_size = gtk.Label ()
  42.         self.job_page_size.set_alignment (0, 0)
  43.         label = gtk.Label (_("Print job page size:"))
  44.         label.set_alignment (0, 0)
  45.         table.attach (label, 0, 1, 0, 1, xoptions=gtk.FILL, yoptions=0)
  46.         table.attach (self.job_page_size, 1, 2, 0, 1,
  47.                       xoptions=gtk.FILL, yoptions=0)
  48.         label = gtk.Label (_("Printer page size:"))
  49.         label.set_alignment (0, 0)
  50.         table.attach (label, 0, 1, 1, 2, xoptions=gtk.FILL, yoptions=0)
  51.         table.attach (self.printer_page_size, 1, 2, 1, 2,
  52.                       xoptions=gtk.FILL, yoptions=0)
  53.         troubleshooter.new_page (page, self)
  54.  
  55.     def display (self):
  56.         self.answers = {}
  57.         (messages, encoding) = locale.getlocale (locale.LC_MESSAGES)
  58.         (ctype, encoding) = locale.getlocale (locale.LC_CTYPE)
  59.         self.answers['user_locale_messages'] = messages
  60.         self.answers['user_locale_ctype'] = ctype
  61.  
  62.         try:
  63.             i18n = file ("/etc/sysconfig/i18n").readlines ()
  64.             for line in i18n:
  65.                 if line.startswith ("LANG="):
  66.                     system_lang = line[5:].strip ('\n"')
  67.                     dot = system_lang.find ('.')
  68.                     if dot != -1:
  69.                         system_lang = system_lang[:dot]
  70.         except:
  71.             system_lang = None
  72.  
  73.         self.answers['system_locale_lang'] = system_lang
  74.  
  75.         printer_page_size = None
  76.         try:
  77.             ppd_defs = self.troubleshooter.answers['cups_printer_ppd_defaults']
  78.             for group, options in ppd_defs.iteritems ():
  79.                 if options.has_key ("PageSize"):
  80.                     printer_page_size = options["PageSize"]
  81.                     break
  82.  
  83.         except KeyError:
  84.             try:
  85.                 attrs = self.troubleshooter.answers['remote_cups_queue_attributes']
  86.                 printer_page_size = attrs["media-default"]
  87.             except KeyError:
  88.                 pass
  89.  
  90.         try:
  91.             job_status = self.troubleshooter.answers["test_page_job_status"]
  92.         except KeyError:
  93.             job_status = []
  94.  
  95.         self.answers['printer_page_size'] = printer_page_size
  96.         if printer_page_size != None:
  97.             job_page_size = None
  98.             for (test, jobid, printer, doc, status, attrs) in job_status:
  99.                 if test:
  100.                     if attrs.has_key ("PageSize"):
  101.                         job_page_size = attrs["PageSize"]
  102.                         self.answers['job_page_size'] = job_page_size
  103.                         if job_page_size != printer_page_size:
  104.                             self.printer_page_size.set_text (printer_page_size)
  105.                             self.job_page_size.set_text (job_page_size)
  106.                             return True
  107.  
  108.         return False
  109.  
  110.     def collect_answer (self):
  111.         return self.answers
  112.  
  113.